home *** CD-ROM | disk | FTP | other *** search
/ JCSM Shareware Collection 1993 November / JCSM Shareware Collection - 1993-11.iso / cl720 / fast278j.lzh / PCSOFT.F < prev    next >
Text File  |  1980-01-01  |  2KB  |  73 lines

  1.  
  2. ;===========================================================================
  3. ;=           PETER CAMPBELL SOFTWARE - ONE FINGERED TYPIST           =
  4. ;===========================================================================
  5.  
  6. ;This program when loaded (say in AUTOEXEC.BAT) will provide users with the
  7. ;ability to type with one finger.
  8. ;
  9. ;When a shift key (Shift, Alt or Control) is pushed then the keyboard status
  10. ;remains the same until another key is pushed, giving the shift key a delayed
  11. ;effect.
  12.  
  13. #stack memory 200
  14. var32 int9v
  15.  
  16. print bios
  17. print bios "PCS OFT - Peter Campbell Software One Fingered Typist" cr lf
  18. print bios " Simply press any Shift key(s) to make use of PCSOFT"
  19. print bios "  To turn PCSOFT off then press all the shift keys."
  20.  
  21. int9v=getint 9:int9s=high int9v:int9o=low int9v
  22. setint 9 to oft
  23. shifting=0:down=0
  24.  
  25. stop resident
  26.  
  27. ;== OFT ====================================================================
  28.  
  29. oft:
  30. pushall
  31. reg ds=reg cs
  32. iscan=in 60h
  33. inline 9ch
  34. call int9s|int9o
  35. skq=searchb 8 from scan_codes for iscan
  36. if skq=0 then
  37.     {
  38.     if down=0 then pokeb 0|417h,peekb 0|417h and 240
  39.     shifting=0
  40.     }
  41. else
  42.     {
  43.     skq-=scan_codes
  44.     n=peekb (power2+skq)
  45.     if skq>=4 then
  46.     {
  47.     down=down and (15-n)
  48.     if shifting then
  49.         {
  50.         pokeb 0|417h,peekb 0|417h or n
  51.         if (peekb 0|417h and 15)=15 then
  52.         {
  53.         reg dx=int9o,ds=int9s:dos 25(9)
  54.         reg ds=reg cs
  55.         pokeb 0|417h,peekb 0|417h and 240
  56.         }
  57.         }
  58.     }
  59.     else
  60.     {
  61.     shifting=1
  62.     down=down or n
  63.     }
  64.     }
  65. popall
  66. iret
  67.  
  68. scan_codes:
  69. datab 036h,02ah,01dh,038h
  70. datab 0b6h,0aah,09dh,0b8h
  71.  
  72. power2: datab 1,2,4,8,1,2,4,8
  73.